闭包及this指向 | 您所在的位置:网站首页 › deform实例 闭式 › 闭包及this指向 |
闭包 闭包指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。 好处:可以读取函数内部的变量、将变量始终保持在内存中、可以封装对象的私有方法和私有属性 坏处:比较消耗内存、使用不当会造成内存溢出的问题 关于闭包中this的指向? 如果作为某个对象的方法调用,则this等于这个对象。 匿名函数不会绑定某个对象,这就意味着this会指向window,除非在严格模式下this是undefined。 例子: Window.test=”The window”; Let object = { Test: ‘My Object’, getTestFunc(){ return function() { return this.test; } } } Console.log(object.getTestFunc()()); // ‘The window’ 每个函数在被调用时都会自动创建两个特殊变量:this和arguments。内部函数会永远不可能直接访问外部函数的这两个变量。但是,如果把this保存到闭包,可以访问的另一个变量中,则是行得通的。 例子: Window.test=”The window”; let object = { test: ‘My Object’, getTestFunc(){ let that = this; return function() { return that.test; }; } }; Console.log(object.getTestFunc()()); // ‘My Object’ |
CopyRight 2018-2019 实验室设备网 版权所有 |